当我遇到这个问题在运行时获取Maven工件版本时,我一直在寻找如何从maven pom或清单中获取应用程序名称(工件ID)和版本。
当我打包项目时,上面的内容对我有用,但是当我尝试使用eclipse运行程序时,似乎什么也没用。我在构建时尝试使用.properties方法,因为我认为这与包无关,但仍然没有得到结果。如果有人对这个问题有想法或解决方案,将不胜感激。
我的最后一次尝试是在下面。打包(有效)时使用清单,并在Eclipse中运行时尝试获取.properties文件。
String appVersion = getClass().getPackage().getImplementationVersion(); if(appVersion == null || "".equals(appVersion)) { appVersion = Glob.getString(appVersion); if(appVersion == null || "".equals(appVersion)) { System.exit(0); } }
创建一个属性文件
src/main/resources/project.properties
具有以下内容
version=${project.version} artifactId=${project.artifactId}
现在打开Maven资源过滤
<resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource>
以便将该文件处理为
target/classes/project.properties
内容与此相似
version=1.5 artifactId=my-artifact
现在,您可以读取此属性文件以获取所需的内容,并且此属性每次都可以工作。
final Properties properties = new Properties(); properties.load(this.getClassLoader().getResourceAsStream("project.properties")); System.out.println(properties.getProperty("version")); System.out.println(properties.getProperty("artifactId"));